﻿
using SharedContracts.Types;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
using TalentDesk.Contracts.Ef;

namespace TalentDesk.Contracts.ServiceContracts
{
    [ServiceContract(Namespace = TalentDesk.Contracts.DataContracts.Namespaces.ServiceContractNS)]
    public interface IProjectService
    {



        #region ProjectType
        [OperationContract]
        [FaultContract(typeof(ExceptionInformation))]
        ProjectType AddProjectType(ProjectType item);
        #endregion

        #region Project
        [OperationContract]
        [FaultContract(typeof(ExceptionInformation))]
        List<Project> GetProjects(bool p_bInclude = false);
        [OperationContract]
        [FaultContract(typeof(ExceptionInformation))]
        Project GetProjectByProjectId(int p_iProjectId, bool p_bInclude = false);

        [OperationContract]
        [FaultContract(typeof(ExceptionInformation))]
        int SaveProject(Project p_oProject, List<ProjectTeam> p_lProjectTeams = null, List<Attachment> p_lAttachments = null);


        #endregion

        #region ProjectTeam
        [OperationContract]
        [FaultContract(typeof(ExceptionInformation))]
        List<ProjectTeam> GetProjectTeamsByProjectId(int p_iProjectId, bool p_bInclude = false);
        [OperationContract]
        [FaultContract(typeof(ExceptionInformation))]
        void SaveProjectTeam(ProjectTeam p_oProjectTeam);
        #endregion

    }
}
